<template>
  <ContentBase>
    <div class="row justify-content-center">
      <div class="col-3">
        <!-- .prevent 阻止表单提交默认行为 ，默认的提交行为是跳转页面 ，会一闪而过-->
        <form @submit.prevent="login">
          <div class="mb-3">
            <label for="username" class="form-label">用户名</label>
            <input v-model="username" type="username" class="form-control" id="username">
          </div>
          <div class="mb-3">
            <label for="password" class="form-label">密码</label>
            <input v-model="password" type="password" class="form-control" id="password">
          </div>
          <div class="error-message">{{error_message}}</div>
          <button type="submit" class="btn btn-primary">登录</button>
        </form>
      </div>
    </div>
  </ContentBase>
</template>

<script>
// @ is an alias to /src
import ContentBase from '../components/ContentBase.vue';
import {ref} from 'vue';
import {useStore} from 'vuex';
import router from "@/router/index.js";
export default {
  name: 'LoginView',
  components: {
    ContentBase,
  },
  setup() {
    let username=ref("");
    let password=ref("");
    let error_message=ref("");
    const store=useStore();
    const login=()=>{
      error_message.value=""; //每次点击登录按钮，先把错误信息清空
      //如果要调用actions里面的方法，必须要使用dispatch
      store.dispatch("login",{
        username:username.value,
        password:password.value,
        success(){
          console.log("success");
          router.push({name:'userlist'});//登录成功跳转到用户列表页面
        },
        error(){
          error_message.value="用户名或密码错误";
        }
      });
    };
    return {
      username,
      password,
      error_message,
      login,
    }
  }
}
</script>

<style scoped>
button{
  width: 100%;
}
.error-message {
  color: red;
}
</style>